The present invention relates to an approach that dynamically loads a kernel extension in a manner transparent to a calling user program.
The kernel is the central component of most modern operating systems that provides a bridge between applications and hardware-level instruction execution. The kernel typically manages system resources as well as communication between the system's hardware and software components. Kernel extensions, as the name implies, provide extended functionality to a base kernel. In some systems, the kernel extensions can be loaded to a running kernel to add the functionality provided by the extension when the functionality is desired. In addition, these systems often allow the kernel extensions, once loaded, to be unloaded when the functionality is no longer needed. Without loadable kernel modules, an operating system would have to have all possible anticipated functionality already compiled directly into the base kernel. Much of that functionality would reside in memory without being used, wasting memory, and would require that users rebuild and reboot the base kernel every time new functionality is desired. Most modern operating systems supporting loadable kernel modules will include modules to support most desired functionality.